翻轉電子書系列:資訊與網路安全概論  

翻轉工作室:粘添壽

第十二章 虛擬私有網路 - IPSec

『重兵部署各地關口,進可攻、退可守』『縱橫面、垂直線聯合作戰』;此為國際商場的大戰略,之間聯絡網即是『虛擬私有網路』

12-1 虛擬私有網路簡介

『虛擬私有網路』Virtual Private Network, VPN)是網路安全另一個重要的措施,概括而言,它是希望在不安全的『公眾網路』(Public Network)上建立一個具安全性較高的『私有網路』。然為何稱之為『虛擬』?是因安全網路是利用軟體或硬體附加在原本不安全網路上,可隨時依其需要建立一個安全通道,使用完畢之後,該安全連線立即消失,並未改變原來的網路架構,故而稱之。

目前所指『公眾網路』大多以 Internet 網路為代表,其組成是經由一些不相干的網路連結而成,網路之間並無特別的管理機制,任何人不經授權都可以自由存取網路上所提供的資源。所以公眾網路的管理既鬆散又不安全,所傳輸的資料除了不具保密性之外,也不保證可以安全到達目的地。一般所指『私有網路』皆是屬於機關行號自行建構的網路,此網路大多僅提供組織內的需求,如工廠自動化、電子化辦公室等等。私有網路內所傳輸的資料較具機密性,多半不願意給外人知曉,因此,私有網路必須經過特殊保護其安全性,且不輕易與外界網路相連。

當公司規模還不是很大時,私有網路大多只侷限於某一區域內,因此只要利用防火牆管制公眾網路與私有網路之間的通訊即可。一旦公司組織擴充至全球各地時,如何結合各地分屬機構網路成為一個安全性較高的私有網路,則非仰賴『虛擬私有網路』技術不可。早期私有網路上大多僅提供檔案伺服功能,應用系統多侷限於 NetBEUI上開發,譬如,Novel Netware Microsoft Network 等『區域網路作業系統』(NOS),此時建構的防火牆只要將 NetBEUI 過濾掉,避免跨越防火牆到公眾網路,即可達到內部網路的防護功能,倘若需要建構 VPN 時,也只需將 NetBEUI 訊框經過包裝後,再經由公眾網路傳遞到另一個私有網路即可,比較典型的 VPN 技術為『點對點通道協定』(Point-To-Point Tunneling Protocol, PPTP)與『第二層通道協定』(Layer 2 Tunneling Protocol, L2TP)【注意:上述兩協定也可以封裝轉送 IPIPXX.25Frame RelayATM 協定】。

近幾年來,許多私有網路已將應用系統轉移到 TCP/IP 協定上,也就是將 Internet 的連結技術應用到一般的電子化辦公室裡,客戶端只需使用瀏覽器(Web-based)便可處理一般事務,這就是所謂的『網域內網路』(Intranet)。如此說來,公眾網路與私有網路已使用同樣的通訊協定(TCP/IP),之間的連結效率會比原來包裝(如 PPTP)後再傳送還高。另外,目前很多公司的分屬機構散落全球各地,出差人員必須隨時繞著地球跑,且必須和總公司或各分公司隨時保持連絡,擷取所需的資料(通常具機密性),如果網路上還是利用安全性較低的 TCP/IP 協定,那幾乎是不可行的。因此,需仰賴安全性較高的 IP 協定,這就是所謂的『IP 安全協定』(IP Security Protocol, IPSec)。本書將利用三個章節分別介紹如何利用 IPSec 協定,建立虛擬私有網路的相關技術;首先本章介紹 IPSec 協定的運作程序,第十六章再介紹協議安全機制的 ISAKMP 協定,最後於第十七章介紹如何建立通訊實體之間會議金鑰的 IKE 協定。

12-2 VPN 網路型態

簡而言之,整合各地的區域網路成為一個安全性較高的網路系統,即為『虛擬私有網路』的基本概念。隨著時代的變遷,虛擬私有網路主要有兩種基本型態WAN-VPN 架構 Internet-VPN 架構

12-2-1 WAN-VPN 架構

欲連結各地區域網路成為一個安全性較高的私有網路,最簡單的方法就是向電信公司(如中華電信公司)承租『專線』連接(或稱專屬鏈路),此種網路型態稱之為『廣域網路的虛擬私有網路』(WAN-VPN,如圖 12-1 所示。基本上,電信公司只提供固定連線,沒有路徑選擇功能,並依照傳輸速率與連線距離計費,傳輸速率可介於 64 Kbits 至數百 Gbits 之間。計費方式與傳輸量無關,完全依照傳輸速率與距離計算月租費,如果傳輸距離較近(如圖 12-1,網路之間的地理位置),費率尚可接受,一旦距離過遠(如台北與高雄之間),則月租費已貴得嚇人,更何況跨越國際之間,那幾乎是不可行。再說,WAN-VPN 僅侷限於事先固定的地理位置之間傳輸訊息,無法隨時移動位置。換句話說,出差人員所到達的地方,除非是架設 VPN 的地區,否則無法與原公司的私有網路通訊。早期為了克服這個問題,大多利用電話撥接來達成,但電話網路傳輸速率慢,而且電話費也很貴,並不完美。由此可見,WAN-VPN 已無法滿足目前國際化的商業環境使用。

但話說回來,WAN-VPN 專屬網路的安全性最高,因為與外界網路完全隔離,閒雜人等不易入侵。因此,WAN-VPN 無需特殊的防護設施,其應用範圍也多侷限於安全防護要求較高的組織單位,如國防部軍事管理的網路系統。

12-1 WAN-VPN 網路型態

其實 WAN-VPN 網路在市場上已使用了不算短的時日,早期 Internet 網路尚未流行時,各公司行號只能向電信公司承租專線連接,但礙於費用高,租用的傳輸速率都不會太高。目前專屬連線大多使用於距離較近的區域網路,或是私有網路與 ISP 機房之間的連線(大都會網路連接)。

12-2-2 Internet-VPN 架構

如前所述,承租沒有路由功能的專線不但價格昂貴,而且也受限於架設位置。俗擱大碗乃是一般人們所欲追求的目標,目前盛行於全球的 Internet 可說是不二人選。利用 Internet 建構 VPN 網路,不但價格便宜,還可藉 Internet 網路的路由功能,將訊息傳送到世界上任何角落,如此一來,所連結的私有網路就不再受地理位置所限。圖 12-2 是利用 Internet 網路所架設的 VPN,可稱之為『Internet-VPN 架構』。在 Internet-VPN 網路之下,區域網路之間是利用公眾網路來連接,之間傳輸訊息須經過多個路由器所建立的『虛擬鏈路』轉送,如果沒有特殊處理,其安全性值得堪虞。我們簡單說明一下它的傳送方式,假設區域網路 A 某一工作站欲連結到區域網路 B 內的工作站,當它將封包(IP 封包)送到 Internet 網路上時,該封包便依照目的位址尋找可到達的路徑,一個網路跨越到另一網路,必須經由許多路由器的轉送才到達區域網路 B,因此,資料在 Internet 網路上傳送時,任何一個網路端點都可竊取或竄改其內容,所以可靠度非常的低,這正是我們發展IP 安全協定』(IP Security, IPSec的主要原因。

12-2 Internet-VPN 網路型態

有一個簡單的做法,只要將圖 12-2 中私有網路對外連接的設備,改換成具有 IPSec 功能的連結設備,就可以達到虛擬私有網路的功能,此連結設備即稱為『安全閘門』(Secuirty Gateway, SG。如圖 12-2 VPN 網路成員(雙方的 SG 閘門),必須協議雙方可能採用的安全套件(包含『鑰匙』)。其中某一網路有訊息欲傳送到另ㄧ網路時,當 SG 閘門收到封包後,則將該封包加入安全措施並重新包裝,譬如訊息加密或認證的處理,之後再將新的封包發送到 Internet 網路上;另ㄧ方的 SG 閘門收到封包後,則依照雙方之前所協議的安全套件,將封包回復原來格式,再發送給內部的私有網路。私有網路內工作站發送訊息給另ㄧ個工作站時,則不需考慮該工作站是否在本區域網路或其他網路上。攻擊者不了解安全套件內容,或沒有雙方協議的『鑰匙』,也無法盜取或偽造訊息內容。

如此一來,我們只要承租較便宜的傳輸線路將私有網路連結到公眾網路上,就可以達成安全性較高的私有網路連結。一般規模較小的公司行號只要承租 ADSL 傳輸線路即可,即使承租的傳輸速率在 3 Mbits 以上也不會太貴;至於較大的組織單位可以租用最近距離之 ISP 公司的專線,雖然費率較貴一點,但總比遠距離的專線便宜許多。

12-2-3 防火牆與 VPN 架構

但話說回來,VPN 是藉由 Internet 網路所構成,意指內部網路可能會暴露於 Internet 網路上;攻擊者可能會透過公眾網路來入侵私有網路,因此一般 VPN 網路都必須配合防火牆裝置,圖 12-3 是一個典型的網路架構。VPN 設備大多安裝在外部路由器上,所以外部路由器除了具備原來封包過濾的功能外,還具備 VPN 的處理能力。譬如,區域網路 A 的使用者想要和區域網路 B 的工作站通訊,它的 IP 封包經由外部路由器(具有 VPN 功能)處理後,再傳送到 Internet 網路上;當區域網路 B 的外部路由器(具有 VPN 功能)收到該封包後,經過適當處理後再轉送給內部網路。另一方面,區域網路如想要和 Internet 上的其他網路通訊,雖不經由 VPN 處理,但也需要依照其安全政策由外部路由器過濾,或經由防禦主機來代理轉送,如此需結合防火牆和 VPN 的功能。也就是說,內部使用者可以選擇是否透過 VPN 處理和外部通訊,VPN 設備也需分辨出所進入的封包是否有經過 VPN 處理,如果有,則表示來自其他所屬機構網路的封包;否則可能是一般外部使用者的訊息。

12-3 防火牆型之 VPN 網路

Internet-VPN 的另一個重要功能是,許多出差人員或 SOHO 工作人員在外,可能需要連結到公司的私有網路來存取資源,但此類人員所使用的電腦大多屬於客戶端功能,我們只要在其電腦上安裝 VPN 軟體,就可以透過 Internet,並以VPN 方式連結到公司內部網路。由圖 12-3 可以發現,不管是區域網路 A B,還是移動式工作站的位置,並不限制其地理位置,只要 Internet 可以到達的地方,都可以建立 VPN 網路,完全合乎企業全球化的需求,至於圖 12-3 VPN 設備,目前大多是指具有 IPSec 功能的路由器或主機設備。

12-3 IP 安全協定

12-3-1 IPSec 協定簡介

IP 安全協定』(IP Security Protocol, IPSec ITEFInternet Engineering Task Force)特別對 VPN 網路所制定的規範RFC 2401,亦分別對 IPv4IP Version 4)與 IPv6IP Version 6)兩個版本制定規範,在此我們會分別介紹之。

Internet 網路上,除了 ARP RARP 有獨立的封包傳輸外,其它通訊協定(如 TCPUDPICMPIGMP)皆是以 IP 封包來傳送。也就是說,這些通訊協定都是經過 IP 封包封裝後,再以 IP 協定在網路上傳輸。傳送端發送 IP 封包時,並無法預估該封包會經過那些路徑,其間需透過網路上一個接一個路由器轉送始可到達目的地。轉送過程中,每一個路由器收到封包後,由封包上讀取該封包上所註明的目的位址,並尋找可能到達的路徑再傳送出去。如此一來,IP 封包內所承載的訊息很容易被有心人士窺視,或是偽造另一個封包傳送給接收端。由此可見,利用 IP 協定來傳輸資料是非常不可靠的。另一方面,既然所有通訊協定都是利用 IP 協定來傳輸,只要我們能將不可靠的 IP 傳輸,經過安全性機制處理之後,使所承載的任何協定就可達到安全性的保護,換言之,經由 IPSec 協定傳輸的任何應用系統,都可以達到安全性的需求,由此可見,IPSec 協定是解決 Internet 網路上安全性需求的根本之道。

12-4 IPSec SSL/TLS 協定堆疊

12-4 (a) IPSec 的協定堆疊,只要將不可靠的 IP 協定轉換成具有安全性的 IPSec;如此一來,透過 IPSec 協定所傳輸的訊息,就可以達到安全性目的。除了 IPSec 安全協定之外,其他安全協定大多屬於 TCP/UDP 協定層次,如SSL TLS協定,其協定堆疊如圖 12-4 (b) 所示。這類協定並不修改 IP 協定,它只針對通訊中某筆訊息(TCP 連線)做安全性的保護,保護措施大多是短暫的,對於與陌生人通訊方面比較方便,因此大多使用於電子商務的應用上,兩者的應用有很大的區別(請參考第十一章說明)。

12-3-2 IPSec 相關技術

談到『安全性』(Security總是離不開兩個主題,一則為『加密』,其目的是要保持資料的隱密性,讓他人無法窺視資料的內容;另一則為『認證』,是驗證通訊中的對方身份,是否遭受他人冒名頂替。為了達到上述目的,還是必須仰賴密碼學中加解密演算法,這又牽涉到交換鑰匙的問題。圖 12-5 IPSec 的相關技術,我們在這裡先概略性的介紹,讓讀者有一個簡單的概念,接下來再詳細介紹,如此可讓讀者較易進入狀況。

12-5 IPSec 相關技術

由圖 12-5 中,可將 IPSec 相關技術歸納如下:

12-6 操作模式

12-3-3 IPSec 運作概念

有了上述相關技術之後,接著來探討它們之間的關聯性,如此可讓讀者稍微瞭解 IPSec 的運作概念,至於詳細的運作程序將會在相關協定中說明,簡述如下:

乍看之下,IPSec 好像很複雜的樣子,這是因為它必須結合許多安全措施(如 PKIISAKMPIKE)才能達成。在此假設每一參與 VPN 運作者都已取得數位憑證(有關憑證認證與身份識別的議題,請參考第七、八章介紹)。首先介紹 AH ESP 安全協定的運作程序,接著再介紹 SA 的安全參數;至於如何利用 ISAKMP 協定建立 SA,將保留在第十六章介紹;第十七章再介紹建立會議金鑰的 IKE 協定。

12-4 IPSec AH協定

『認證標頭』(Authentication Header, AH IPSec 最基本的安全協定,它是針對 IP 封包標頭做安全認證,提供有『非連接導向的完整性』、『資料來源認證』、以及『反重播』等保護服務(12-6-1 節介紹)。另外 AH 並未對所承載的資料作任何保護,基本上,IP 封包在 Internet 網路上,乃經由路由器(或網路閘門)層層轉送才會到達目的地,每經過一個路由器轉送時,路由器便拆解該封包的標頭,根據標頭上所標示的目的位址,繼續往下一個路徑傳送;當然每一路由器都會重新包裝該封包,並製作新的封包標頭,所以有心人士非常容易去竄改封包標頭,或從事重播攻擊的行為。AH 的功能是對 IP 封包提供認證,確保遭受竄改的封包可以被偵測出來。

AH 使用密碼學的『訊息認證碼』(Message Authentication Code, MAC來認證 IP 封包標頭。簡單的說,傳送端將 IP 封包標頭經過雜湊演算法得到一個訊息摘要(Message Digest, MD),再將此訊息摘要經過秘密金鑰加密,得到一個 MAC 碼,最後將此 MAC 碼(製作 AH 標頭)與 IP 封包一併傳送給接收端;接收端收到此封包後,以同樣的演算法與秘密金鑰產生另一個 MAC 碼。如果兩者 MAC 碼相同的話,表示封包未遭受竄改或偽造;否則需拋棄此封包。目前最常用的 MAC 演算法是 HMACHash Message Authentication Code),主要原因是,它可以配合不同的雜湊演算法,譬如,MD5SHA-1RIPEMD-160 Tiger 等雜湊函數。另外加密時所需的秘密金鑰是在安全關聯(SA)裡所制定,在此暫時不去討論它如何產生。

12-4-1 AH 標頭格式

認證標頭(AH)是 IPSec AH 協定所產生的一個新認證標頭,主要功能是認證原封包標頭是否遭受竄改,並將它置放於原封包標頭的後面。AH 標頭包含五個固定長度的欄位和一個不定長度的認證資料欄位,如圖 12-7 所示,各欄位功能如下:

12-7 認證標頭格式

接下來,我們來討論 AH 協定如何利用『序號』防止重播攻擊。它是利用『滑動視窗』(Sliding Window的運作方式,當 SA 被建立時,傳送者與接收者的序號計數器都必須清除為 0 開始,傳送者每發送一筆封包出去便將序號計數器加一(不一定是給某一個固定接收者);接收者再利用滑動視窗法檢視哪一個序號的封包已經接收過,將所收到的封包號碼以環狀佇列排放,進入的封包序號依序填入佇列的前方(由前端指標指引),而佇列的後端表示已經回應過的序號(由後端指標指引)。在正常的情況下,接收端不斷接收與回應封包,前端指標與後端指標將會不停的滑動,因此稱之為滑動視窗法。當防止封包重播攻擊的功能啟動時,接收端收到封包後,將檢測封包序號是否小於後端指標所指引的數值,如果較小的話,表示該封包已回應過,可不予理會,如此便能避免重播攻擊。

12-4-2 AH 操作模式

IPSec AH 協定有『傳輸模式』(Transport Mode『通道模式』(Tunnel Mode兩種操作模式,其不同點在於 AH 標頭所存放的位置。AH 可以利用通道模式重疊使用,也可以和 ESP 一起使用(12-6-2 節介紹),以下先介紹這兩種操作模式。

【(AAH 傳輸模式

AH 傳輸模式是將認證標頭放置於 IP 封包標頭與傳輸層協定(TCPUDP 或其他協定)的標頭之間,有 IPv4 IPv6 種不同封包格式。圖 12-8 (a) 為原 IPv4 封包,經過 AH 傳輸模式包裝後的格式如圖 12-8 (b)所示,IP 標頭的長度可以由 20 Bytes 60 Bytes 之間,之所以不定長度是因為有可能在標頭後面加入選項(Options)資料,如果沒有選項資料,則 IP 標頭長度為 20 Bytes

12-8  IPv4 AH 傳輸模式包裝

基本上,原來 IPv4 封包標頭是不用修改的,只要將 AH 標頭加入即可,但因原 IP 封包所承載的協定已變成 AH 協定,而非原來的協定,因此還是需要將 IP 標頭內的『協定』(Protocol)欄位內容設定為 51AH 協定),並將原來的值置於 AH 標頭的『Next Header』欄位上。譬如,原來 IP 封包所承載的是 TCP 協定(Protocol=5), 經過 AH 傳輸模式包裝後,IP 標頭上的 Protocol 欄位便成為 51AH 協定),而 AH 標頭上的 Next Header 欄位則需設定為 5TCP 協定,如圖 12-8 (b) 所示)。

【(BAH 通道模式

所謂『通道模式』(Tunnel Mode,即是隱藏原來的 IP 標頭,而另外製作一個新的封包標頭,並且利用 AH 標頭保護原來的 IP 標頭。圖 12-10 IPv4 IPv6 AH 通道模式的封包包裝,新的封包標頭稱之為『外部標頭』(Outer Header;而原來封包標頭稱之為『內部標頭』(Inner Header。基本上,外部標頭的封裝格式與原 IP 標頭一樣,但它的目的位址與來源位址,可能和內部標頭不同,不相同的原因是該 AH 通道所扮演的角色有所不同(連接主機或安全閘門,容後介紹)。外部標頭的內容也可以被所經過的路由器修改,譬如 TTL 或標頭檢查碼等欄位。

12-10 IPv4 IPv6 AH 通道模式的封裝格式

我們用一個簡單的範例來說明 AH 通道模式的特殊用途,相信可讓讀者更容易瞭解 AH 通道模式的特性。一般在 VPN 網路上,都希望將內部的網路位址隱藏起來,並透過 NATNetwork Address Translator)將內部位址轉換到外部位址,如圖 12-11 所示。兩區域網路(192.168.1.0/24 192.168.2.0/24)是透過 Internet 網路做 VPN 連接,並且將 IPSec AH Tunnel NAT 軟體安裝於雙方網路的『安全閘門』(Security Gateway, SG)上,連結到外部的合法位址分別是 163.17.8.141 163.20.9.5。當內部網路 A 的工作站(工作站 M,位址為 192.168.1.52)欲傳送封包給內部網路 B 的工作站(工作站 N,位址為 192.168.2.121)時,SG-A 將工作站 A 所發送的封包經由 IPSec AH Tunnel 包裝。在包裝當中,內部標頭的目的位址將會是 192.168.2.121;而外部標頭的目的位址是 163.20.9.5。區域網路 B SG-B 收到封包後,再拆解外部標頭,並從事認證的工作,如果認證無誤的話,便捨棄外部標頭,恢復原來封包格式,並發送到內部網路;工作站 B 再由網路上收到該封包。如此,對雙方工作站而言,並不知道有 VPN 網路的存在,猶如在同一區域網路上運作一樣,也就是說,好像在公眾網路上建立一個秘密通道,故稱為『通道模式』。

12-11 AH 通道模式範例

就另一方面而言,AH 傳輸模式並不適合圖 12-11 網路使用,我們用兩種安裝架構說明它不適合的原因:(1) 如果將 IPSec AH Transport 安裝於雙方工作站(工作站 M N)上,而由工作站 M 計算 AH 標頭,並重新包裝 IP 封包,但該封包到達 SG-A 時,會經由 NAT 更改目的位址(成為合法位址)、重新計算檢查值後再傳送出去。當工作站 N 收到此封包後,會依照封包標頭重新計算認證資料,但標頭已被修改,當然會發生認證失敗而拋棄該封包。(2) 第二種情況是將 IPSec SH Transport 安裝於雙方的安全閘門(SG-A SG-B)上,安全閘門會依照原封包標頭計算 AH 標頭,再將原封包位址轉換到合法位址,如此也會變更到原 IP 封包標頭,同樣會造成接收端認證失敗的結果。

12-4-3 AH 認證欄位

AH 認證欄位是傳送端選擇原來 IP 封包標頭上某些欄位的值,並將這些值經過 MAC 演算法計算,產生一個『完整性檢查值』(Integrity Check Value, ICV),再將此 ICV 值存放於 AH 標頭的認證資料欄位(如圖 12-7 所示)上;接收端收到 IPSec AH 封包後,選擇同樣欄位計算出 ICV,如果該 ICV AH 標頭上 ICV 相同的話,則表示該封包是正確的,但必須滿足下列三個需求:

基本上,這三個需求都必須在通訊之前,透過 SA 連線協議而成。但就第三個需求而言,除了雙方可協議出採用哪些欄位外,我們同時必須了解選擇欄位的原因。有些欄位的內容會隨時改變,並不適合做 AH 認證使用,否則會發生許多無謂的困擾。如以 TTL Header Checksum 欄位為例,IP 封包每經過一個路徑(或路由器),則 TTL 的值便會被減一,之後路由器會再重新計算標頭檢查值(Header Checksum),因此這兩個欄位隨時會遭受修改其內容。如果傳送端將隨時變更欄位的值加入計算的話,接收端在做認證檢查時,將很困難去辨別是正常變更或是遭受破壞。因此,我們必須先了解 IP 封包標頭上有哪些欄位容易變更、以及哪些欄位較不容易變更。在協調雙方通訊參數時(SA 連線),便可參照這些訊息來決定哪些欄位可加入認證範圍。當然,加入愈多的欄位則認證的安全性愈高,但這必須視通訊雙方的需要而定。

【(AIPv4 易變更的欄位】

以下列出 IPv4 封包標頭較容易變更的欄位:

【(BIPv4 不易變更的欄位】

IPv4 封包標頭在傳輸當中,不容易被變更欄位有:

基本上,選擇那些欄位計算 ICV,是由雙方協議的 SA 來決定,我們將 IPv4 的封包標頭顯示於圖 12-12,其中有底色的欄位表示有可能被選取的機會。如果沒有被選取的欄位,在計算 ICV 時都會被設定為零。

12-12 IPv4 標頭可參與計算 ICV欄位(有陰影部份)

我們用兩個簡單的範例,說明選擇那些欄位計算 ICV,可能會對 AH 認證能力產生影響。一者將總長度欄位加入計算,倘若傳輸當中封包所承載資料遭受替換,雖然攻擊者也可以修改總長度欄位的內容,來蒙騙接收者;但接收端還是可以由 ICV 計算出認證封包長度是否被變更,如此一來,表示 IPSec AH 不但可以保護封包標頭,也可認證整個 IP 封包,此即稱為『非連接導向的完整性』功能。另一者,倘若將來源位址加入 ICV 計算,則可以避免中間人攻擊,其原因是中間人將封包接收後,再發送新的封包給接收端,則新的封包的來源位址勢必遭受變更,接收端便可依此驗證出該封包的正確性,此即稱為『資料來源認證』功能。

12-4-4 AH 運作程序

執行 IPSec AH 的裝置可能是主機或路由器,如果在路由器上執行 IPSec 的功能的話,就稱它為『安全閘門』(Security Gateway, SG。一般 VPN 網路都是透過安全閘門對外通訊。另外,外部漫遊主機為了要與 VPN 網路通訊,也可以在主機上安裝 IPSec 軟體。我們將 IPSec AH 的運作模式(主機或安全閘門)以圖 12-14 的流程圖表示。還未介紹其運作程序之前,我們必須強調 IPSec 運作完全依照雙方所協議『安全關聯』(SA)的安全參數而定,然而安全閘門則利用下列兩個資料庫來決定是否給予 IPSec 處理,以及 SA 相關安全參數,如下:

以下分別以發送與接收的處理流程來介紹。

【(A)送出 IPSec AH 封包的運作程序】

在防火牆架構的 VPN 網路上,當安全閘門(SG)收到一個往外送的封包,它必須決定是否給予該封包 IPSec 處理,直接通過或者過濾該封包不予通過。這裡我們暫不考慮防火牆功能,只針對 VPN 網路安全閘門的運作程序來介紹,如以下步驟:(如圖 12-14 (a) 所示)

12-14 IPSec AH 的運作程序

【(B)接收 IPSec AH 封包的運作程序】

基本上,IPSec 協定不允許封包在傳輸中途被分段,所有分段必須在發送端的安全閘門(SG)上完成,然而安全閘門傳送封包之前,並不瞭解網路狀態(譬如 MTU 大小),因此它必須經由測試才知道是否需要分段。測試分段方法如下:首先將封包標頭的 DF 旗號設定成『不允許分段』(Don’t Fragment,傳送封包當中遇到 MTU 較小的路徑,而需要分段時,則該路徑的路由器便會回應 ICMP Destination UnreachableType 3 Fragmentation Needed and DF SetCode 4)封包給原傳送端(即是安全閘門);安全閘門收到 ICMP 封包之後,便了解需要分段才能傳送封包,則分段該封包並分別傳送出去;並且將所有分段封包標頭上的 MFMore Fragment)設定為 1MF = 1),但最後分段封包設定為 0MF = 0)。倘若所有路徑都不需要分段的話,當然安全閘門就不會收到 ICMP 封包,亦表示傳送正常。

也就這樣,接收端收到 IPSec AH 封包後,必須由封包標頭上的 MF觀察是否有其他分段封包緊接在後,如果 MF=0,則表示本封包是最後分段或未經分段封包。IPSec AH 接收端運作程序如下:(如圖 12-14 (b) 所示)

12-5 IPSec ESP 協定

12-5-1 IPSec 協定簡介

IPSec 另一個安全協定為『封裝安全承載』(Encapsulation Security Payload, ESP),同樣包含 IPv4 IPv6 種規範。ESP 協定是將原來封包所承載的資料經過加密處理之後,再重新封裝一個新的封包(ESP 封包)才傳送給接收端;接收端拆解 ESP 封包後,先將資料解密,再組合回原封包格式,故稱之為『封裝安全承載』,其特性歸納如下:

相較於 AHESP 好像增加了資料隱密性和有限的流量機密性功能,但對於資料來源的認證,就沒有 AH 協定那麼完整。簡單的說,AH 協定主要是提供封包標頭的認證,任何有修改或偽裝封包將被偵測出來,但對於資料是否認證功能,完全取決於所選用的認證欄位而定;當然ESP 協定除了提供簡單的封包標頭認證之外,並將所承載的資料加密,以達到資料隱密性的功能。

12-5-2 ESP 封包格式

ESP 封包格式與 AH 有很大的不同點,AH 是將認證標頭插入原封包標頭的後面或前面,基本上還是保留原來的封包格式;然而 ESP 為了達到資料的隱密性,會將原封包所承載的資料重新包裝成另一個『ESP 封包格式』,並依照操作模式(傳輸或通道模式)處理原封包標頭。譬如,傳輸模式就是將 ESP 封包放置於原封包標頭的後面;而通道模式是新建立一個的封包標頭,放置於最前面(容後詳細介紹)。

12-15 IPSec ESP 封包格式

12-12 ESP 封包格式(未包含原封包標頭),它是將原封包所承載資料經過加密(或未加密)後,再重新包裝的格式。一般將 SPI Sequence Number 稱之為『ESP 標頭』(ESP Header),而 Payload Length Next Header 兩個欄位稱之為『ESP 標尾』(ESP Trailer),各欄位功能如下:

由上述的介紹,可以分辨出 AH ESP 兩協定之間最大的不同點,AH 協定較著重於封包標頭認證,因此對於封包來源認證功能較強;然而 ESP 協定則偏重於承載資料的隱密性及認證,對於資料的保護較為嚴密。使用者可依照環境需求選擇 AH ESP 協定,甚至也可以整合 AH ESP 協定使用。

12- 5-3 ESP 操作模式

如同AH 協定一樣,ESP 協定也分為『傳輸模式』與『通道模式』兩種操作模式,其最大的不同點在於 ESP 標頭(SPI Sequence Number 欄位)所存放的位置,以及是否重新建立新的封包。以下分別就 IPv4 IPv6 來介紹這兩種運作模式。

【(AIPv4 ESP 傳輸模式】

12-16 IPv4 ESP 傳輸模式的封包格式,它是將 ESP 標頭(SPI Sequence Number 欄位)插在原 IP 封包標頭之後,並對原封包所承載的資料編碼加密,再存放於 ESP 承載欄位上;緊接著是 ESP 標尾(PaddingPad Length Next Header 等欄位),最後才是 ESP 認證資料的欄位(ICV 資料)。其中經加密編碼欄位是否包含 ESP Trailer、或所提供的認證範圍(ESP 標頭到 ESP 標尾之間),皆由雙方協議之 SA 而定。

12-16 IPv4 ESP 傳輸模式之封包格式

【(CIPv4 ESP 通道模式】

之前我們利用圖 12-11 說明傳輸模式與通道模式之間的不同點,其中表示通道模式可使用於 NAT 網路環境裡,方法是將內部網路位址包裝在『內部標頭』(或稱原 IP 標頭)之內隱藏起來,再將『外部標頭』(或稱新的 IP 標頭)設定為合法網路位址。也就是說,IPSec ESP 封包封裝時,是將原來 IP 標頭包含進去(傳輸模式沒有),並且另外建立一個新的 IP 標頭(外部標頭)。圖 12-18 (a) IPv4 封包經由 IPSec ESP 通道模式封裝的格式,加密編碼與認證範圍如同傳輸模式一樣(ESP 封包範圍如同圖 12-1617 一樣)。

12-18 IPv4 IPv6 IPSec ESP 通道模式封包

ESP 加密及認證演算法

基本上,ESP 都使用對稱加密演算法。這是因為公開金鑰演算法必須耗費較長的加密/解密時間,這對於一般通訊而言效率太低。另一方面,IPSec 只建議 VPN 系統至少需具備有 DES NULL 兩種編碼演算法,其中 NULL 表示所承載的資料是沒有經過編碼的,亦即選用 NULL 編碼演算法,則表示沒有加密的功能。除了上述兩種編碼系統外,通訊雙方也可以經由 SA 連線來協議雙方的編碼系統(如 AES 演算法)。

同樣的,IPSec 並沒有強制規定一定要用何種認證演算法,但規定至少要有:HMAC-MD5HMAC-SHA-1 NULL 等演算法,其中 NULL 表示沒有認證功能的意思。無論所採用的加密系統、驗認演算法或演算法中所需的秘密金鑰,都必須雙方經由 ISAKMP 協定協議出來,如果在協議之中需要交換雙方鑰匙,就會使用到 IKE 協定。

12-5-4 ESP 運作程序

基本上,在 RFC 2406 中並沒有規定標準的運作程序,因此,不同的實作也許會有不一樣的程序,我們在此僅列出其應有功能的運作程序。

【(A)封包外送處理程序】

執行 IPSec ESP 功能的裝置也許是移動式主機或安全閘門,當它收到一個往外送的 IP 封包時,其處理 ESP 功能的運作程序如圖 12-19 (a) 所示,步驟如下:

12-19 IPSec ESP 協定的運作程序

【(B)封包接收處理程序】

當安全閘門或主機收到 IPSec 封包後,處理程序如下:(如圖 12-19 (b) 所示)

12-6 安全關聯

12-6-1 安全關聯的特性

『安全關聯』(Security Association, SA IPSec 中重要的觀念。由前面所介紹的 AH ESP 協定當中,可以發現所有通訊行為都必須依照雙方事先所協議的 SA 安全參數;到底 SA 是何種東西?相信是讀者最迫切想知道的答案。其實 SA 是資料庫(SAD)中的某一筆記錄,登錄所需的安全機制,譬如,安全協定(AH ESP)、操作模式(傳輸或通道模式)、認證演算法(HMAC-MD5, …)、加密系統(DES-CBC, …)、或共享秘密金鑰等等。至於 SA 是如何建立的,將於下一章再介紹,在此先介紹 SA 的特性及相關參數,其特性歸納如下:

12-6-2 安全關聯的功能

依照 IPSec 協定的特性,安全關聯(SA)提供有下列功能:

由以上的介紹,我們可以做簡單的結論:AH SA 協定主要是訴求來源資料認證;而 ESP SA 較著重於資料隱密性功能;但是AH ESP 都具有資料完整性的功能。如果通訊連線需要資料來源認證與資料隱密性功能,則必須由 AH SA ESP SA 兩個安全關聯來描述,亦即必須同時經過 AH ESP 封裝包裝。

12-6-3 安全關聯的組合

IPSec 不僅有 AH ESP 兩種協定,而且每一種協定又有兩種操作模式,因此IPSec 協定就有 AH 傳輸、AH 通道、ESP 傳輸、ESP 通道等四種運作模式,其中每一種運作模式都需要獨立的 SA 來制定其安全政策。至於一個通訊連線也許需要多個 SA 來描述其安全機制,這多筆 SA 就稱為『安全關聯束』(SA Bundle),不同環境需求,可能出現不同的組合方式,基本上可歸納為『傳輸串接』(Transport Adjacency)與『反覆通道』(Iterated Tunneling)兩種組合方式,以下分述之。

【(A)傳輸串接】

『傳輸串接』是針對同一個 IP 封包做多次傳輸模式的操作,其中並沒有實現通道模式。在這種模式下,通訊連線也許會經由多個 AH ESP 協定的傳輸模式包裝,每一層次的包裝皆是針對一個特殊路徑。圖 12-20 (a) 為傳輸串接組合的範例,其外層的安全關聯是利用 AH Transport 包裝,而內層是 ESP Transport 包裝,如果由封包結構來看,就好像傳輸模式的封包標頭串接起來的樣子,如圖 12-20 (b) 所示。

12-20 傳輸串接組合之範例

【(B)反覆通道】

『反覆通道』是利用多層次的 IPSec 通道(Tunneling)做安全防護,這種多層次是以巢狀包裝方式。也就是說,最外層包裝內層協定封包,下一層再包裝下一個內層的協定封包,依此類推,達成反覆的(Iterated)封包包裝。反覆通道的安全關聯模式有下列三種:

12-21 反覆通道 SA 模式之一

12-22反覆通道 SA 模式之二

12-23 反覆通道 SA 模式之三

12-6-3 安全政策資料庫

IPSec 協定上,係利用兩個資料庫來實現安全關聯的措施,一者為『安全政策資料庫』(Security Policy Database, SPD;另一者為『安全關聯資料庫』(Security Association Database, SAD。另外針對外出(Outbound)與進入(Inbound)訊務,兩種資料庫也分別以不同的資料庫系統來處理,即『外出資料庫』(Outbound Database)與『進入資料庫』(Inbound Database),分別處理進入與外出訊務。兩者資料庫係安裝在有處理 IPSec 協定的裝置上,可能是主機或安全閘門(Security Gateway)上。本節將介紹 SPD,至於 SAD 將會在下一小節介紹。

基本上,『安全政策資料庫』(SPD)是依照組織單位政策來建立,可選擇某些訊務(Traffic)是否給予安全機制的措施。因此,SPD 資料庫大多是利用人工輸入方式來建立,並且一般安全裝置都必須提供輸入 SPD 的介面。在 SPD 資料庫上,每一筆記錄都有相對應的指標到安全關聯資料庫的某一筆記錄,即索引到一個安全關聯(SA)。但是一個通訊訊務可能符合一個或多個安全政策,相對會搜尋到一筆或多筆安全關聯(或稱 SA Bundle),所以必須分別針對每一個安全關聯做處理(如 IPSec 協定包裝)。

【(A)外出處理】(Outbound Processing

當安全閘門(或安全主機)收到一個外出的訊務時,必須針對這筆訊務做:啟動安全機制、直接轉送、或拋棄該訊務等三項之一的處理。至於應該給予何種處理,這必須由人工輸入建立各種規則,但我們在建立這些規則時,必須考慮到如何由該訊務上得到判斷的訊息,當然這些可判斷的訊息大多來自封包各欄位上的資料,我們也將這些訊息稱之為『選擇因素』(Selectors)。在 RFC 2401 列有下列選擇因素:

一般 Internet 網路上的應用系統都以傳輸埠口來分辨,譬如,Web Server 位於 80 埠口(TCP UDP),因此,選擇因素參考到 IP 封包上所承載資料的機會非常大,也就是說,安全裝置為了搜尋安全政策,會將 IP 封包拆解到 TCP/UDP 協定的層次。也就這樣,IPSec 協定不允許 IP 封包被中途再分段,所有分段動作必須在原發送端完成;然而接收端也必須接收完所有的分段封包,才可繼續做其他安全機制的處理。

【(B)進入處理】(Inbound Processing

另一方面,一個安全性的訊務可能由多個 IPSec 封包所構成,安全閘門(或安全主機)是利用每一個 IPSec 封包標頭的目的位址、安全協定(AH ESP)、以及安全參數索引(SPI)等三個參數來分辨所屬的安全關聯;並且將該訊務所屬的 IP 分段組合回原 IP 封包。接下來,接收端的安全閘門再依照各種『選擇因素』(Selectors),搜尋 SPD 資料庫,是否符合相關安全政策,如果符合則接受此訊務;否則便將之拋棄。一個訊務所屬的安全政策也是經由許多安全關聯所構成,因此,可能需要多次的搜尋 SPD 資料庫才能完成。

12-6-4 安全關聯資料庫

『安全關聯資料庫』(Security Association Database, SAD記錄著每一筆安全關聯(SA)的相關參數,這些參數也許是經由人工輸入,或是通訊雙方經由 ISAKMP 協定建立而成。基本上,每一筆安全訊務都必須依照安全關聯的參數來製作;也就是說,在 SAD 資料庫上至少有一個以上的記錄(SA 記錄)。對於外出訊務而言,是利用『選擇參數』來搜尋 SPD 資料庫,而得到一個進入 SAD 資料庫的進入點(Entry),每一個進入點表示一個安全關聯,同時記錄著外出的相關安全參數;對於進入訊務而言,係利用 IPSec 封包上的目的位址、安全協定(AH ESP)以及安全參數索引(SPI)等三個參數,來搜尋 SAD 資料庫,以得到相關的安全參數。

至於 SAD 資料庫上有哪些欄位來描述各種安全參數,完全依廠商的實作有所不同,在 RFC 2401 上列出下列安全參數,可供各家廠商參考使用:

其中 SA 壽命參數表示該筆 SA 的存活時間,這也表示並非每次通訊時都必須重新建立安全關聯(人工輸入或 ISAKMP 協定建立),在這有效期間內安全關聯是可以重複使用的。另一方面,當某一筆安全關聯被參考使用時,序號計數器便會增加計數,因此計數器除了接收端可以避免重複攻擊外,傳送端也可依此計數內容,了解安全關聯被使用的情況。